iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
DevOps

菜逼八用Github Actions系列 第 28

Day 28 - 比較Github Actions 與 Jenkins

  • 分享至 

  • xImage
  •  

目錄

摘要

在上一篇我們學到整合lighthouse到CI,並在PR區下方直接列出檢查結果的分數

這篇我們會來會來比較一下Github Actionsc和另一個CI/CD工具Jenkins,供大家做選擇的參考,不過總結來說小團隊、需求單純,且job執行時間較少的話,個人會推薦用Github Action,反之則是Jenkins

什麼是Jenkins

https://ithelp.ithome.com.tw/upload/images/20240929/20135568LaKjXh4Kdd.png

Jenkins 也是常見的CI/CD工具,一樣也提供了 Linux、Windows、macOS 的虛擬機 (VM)、支援多種插件

在Jenkins這邊也有workflow的概念,稱作pipeline透過jenkinsfile可以定義pipeline

pipeline分為兩種撰寫風格declarative pipeline、scripted pipeline

  • declarative pipeline

    • 以多個block區分開,易讀性較高
       pipeline {  
       agent { 
          label 'linux'
        }
      
       stages {   
         stage("foo") {     
           steps {       
             script {          
               // 部分指令(e.g.:shell的變數賦值)只能寫在這
             }        
           }      
         }
         stage("bar") {
           steps{  
             // 指令寫在這
           }      
         }
       } 
      }  
      
    • 有些插件不支援
    • 但是有個bug會導致pipeline中的code數量會被限制,2024年10月的現在仍未解決
  • scripted pipeline

    • 更彈性,適合處理一些客製需求
    • 所有指令擠在node block中,使得更複雜、更難維護
      node {
        // 指令寫在這
      }
      

架設難易度

Github Actions

基本上開箱即用,要做的事只有2件

  1. 設定有workflow權限的token,並將token貼到憑證管理員
  2. 撰寫workflow

詳細可以參考Day14 - 撰寫第一個workflow的前置工作

Jenkins

架設較Gihub Actions複雜,且除了Jenkins相關知識以外,也會需要具備AWS、Docker相關知識

  1. 建立EC2載體
  2. 安裝Jenkins
    Docker安裝,或AWS有提供預先配置好的環境可以用
  3. 進行Jenkins設定(e.g.:初始化設定、建帳號)
  4. 進行和跟Gihub串接
  • 到建立Gihub建立token,然後去Jenkins設定source code management
  • 設定觸發程序
  • 到Github設定webhook
  1. 撰寫Jenkinsfile
    • 一定要在pipeline中自行做後置步驟

詳細可以參考Getting started with the Guided TourCreating your first PipelineJenkins with Github

價格

Github Actions

以Github Actions的免費方案舉例,預設有500MB記憶體容量、免費的2000分鐘執行時間,若採用Linux 2核心,

每個月執行時間為2000分鐘,則收費為0
每個月執行時間為4000分鐘,則收為16USD(0.008*2000)

最大同時運行job數為20,超過的話就需要等待

更詳細的話大家可以用Github Actions pricing calculator試算

Jenkins

Jenkins本身是免費的,可是要是用它需要伺服器跟儲存build出來的東西、log的地方,這些都是要收錢的

不過Github Actions也需要額外準備儲存空間,所以跳過S3不算

只假設我們選用跟Github Actions免費方案差不多的AWS EC2載體(t2.micro)來搭配Jenkins的話,

每個月執行時間為2000分鐘,則收費為0.38USD(=(2000÷60)*0.0116)
每個月執行時間為4000分鐘,則收費為0.77USD(=(4000÷60)*0.0116)

至於最大同時運行stage數沒有具體的數據,因為這會和stage的複雜度、執行時間有關,但能肯定的是只要資源不足仍然會塞車


上一篇
Day 27 - 例子 - CodeQL整合到CI
下一篇
Day 29 - Goodbye Jenkins, and hello Github Actions
系列文
菜逼八用Github Actions30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言